﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/******************************************************************************************
 ** 文件名：	ColumnDB
 ** 创建人：	Tony Mucor
 ** 日期：	2013-07-18
 ** 描述：	栏目数据层类
 *****************************************************************************************/

/// <summary>
/// ColumnDB 栏目数据层
/// </summary>
public class ColumnDB : DataLayer
{
	#region 构造函数

	public ColumnDB()
	{
		clsDB = new DBOperating();
		clsConfig = new Configuration();

		nIDNumber = 0;
		nStatusNumber = 5;
		strTableName = "Columns";
		nColumnNumber = 8;

		arrTableColumnName = new string[nColumnNumber];
		arrTableColumnValue = new string[nColumnNumber];

		arrTableColumnName[0] = "Columns_ID";
		arrTableColumnName[1] = "Columns_Name";
		arrTableColumnName[2] = "Columns_FatherID";
		arrTableColumnName[3] = "Columns_Link";
		arrTableColumnName[4] = "Columns_Grade";
		arrTableColumnName[5] = "Columns_Status";
		arrTableColumnName[6] = "Columns_Order";
		arrTableColumnName[7] = "Columns_Type";
	}

	#endregion

	#region 函数

	/**********************************************************************************************
	 ** 函数名：	QueryByFatherID
	 ** 功能描述：	根据上级栏目ID查询栏目
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-18
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByFatherID(int nFatherID)
	{
		string strSQL;

		strSQL = "SELECT * FROM Columns WHERE Columns_Status = '"+clsConfig.nNormal.ToString()+"' AND Columns_FatherID = '"+nFatherID.ToString()+"'";

		return QueryToDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 函数名：	GetNameByID
	 ** 功能描述：	根据栏目ID获得栏目名称
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-18
	 ** 备注：
	 *********************************************************************************************/
	public string GetNameByID(int nID)
	{
		return QueryOneToDataRow(nID)["Columns_Name"].ToString();
	}

	/**********************************************************************************************
	 ** 函数名：	QueryByFatherIDGrade
	 ** 功能描述：	根据上级栏目ID和栏目级别查询栏目
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-18
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByFatherIDGrade(int nFatherID, int nGrade)
	{
		string strSQL;

		strSQL = "SELECT * FROM Columns WHERE Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_FatherID = '" + nFatherID.ToString() + "' AND Columns_Grade = '"+nGrade.ToString()+"'";

		return QueryToDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 函数名：	QueryByGrade
	 ** 功能描述：	根据栏目的等级查询栏目记录
	 ** 输入参数：	nGrade		要查询的栏目等级
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-19
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByGrade(int nGrade)
	{
		string strSQL;

		strSQL = "SELECT * FROM Columns WHERE Columns_Status = '"+clsConfig.nNormal.ToString()+"' AND Columns_Grade = '"+nGrade.ToString()+"' ORDER BY Columns_Type ASC";

		return clsDB.QueryDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 功能描述：	根据栏目ID组成的字符串查询栏目（字符串样子：1, 2, 3）
	 ** 输入参数：	strColumnsID		栏目ID字符串
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-24
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByColumnsID(string strColumnsID)
	{
		string strSQL;

		if (strColumnsID == "")
		{
			strColumnsID = "0";
		}
		strSQL = "SELECT * FROM Columns WHERE Columns_Status = '"+clsConfig.nNormal.ToString()+"' AND Columns_ID IN ("+strColumnsID+")";
		return clsDB.QueryDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 功能描述：	根据栏目等级，和用户组就有权限访问的栏目ID和查询栏目
	 ** 输入参数：	nGrade		栏目等级
	 **		strColumnIDs	用户组有权限访问的栏目ID和
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-26
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByGradeIDs(int nGrade, string strColumnIDs)
	{
		string strSQL;

		if (strColumnIDs != "")
		{
			strSQL = "SELECT * FROM Columns WHERE Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_Grade = '" + nGrade.ToString() + "' AND Columns_ID IN ("+strColumnIDs+") ORDER BY Columns_Type ASC, Columns_Order ASC";
		}
		else
		{
			strSQL = "SELECT * FROM Columns WHERE Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_Grade = '" + nGrade.ToString() + "' ORDER BY Columns_Type ASC, Columns_Order ASC";
		}

		return clsDB.QueryDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 功能描述：	根据栏目等级，和用户组就有权限访问的栏目ID和查询栏目
	 ** 输入参数：	nGrade		栏目等级
	 **		strColumnIDs	用户组有权限访问的栏目ID和
	 **		nType		栏目类别
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-09
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByGradeIDsType(int nGrade, string strColumnIDs, int nType)
	{
		string strSQL;

		if (strColumnIDs != "")
		{
			strSQL = "SELECT * FROM Columns WHERE Columns_Type = '"+nType.ToString()+"' AND Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_Grade = '" + nGrade.ToString() + "' AND Columns_ID IN (" + strColumnIDs + ") ORDER BY Columns_Type ASC, Columns_Order ASC";
		}
		else
		{
			strSQL = "SELECT * FROM Columns WHERE Columns_Type = '"+nType.ToString()+"' AND Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_Grade = '" + nGrade.ToString() + "' ORDER BY Columns_Type ASC, Columns_Order ASC";
		}

		return clsDB.QueryDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 功能描述：	根据栏目上级栏目ID，和用户组具有的访问栏目ID和查询栏目
	 ** 输入参数：	nFatherID		上级栏目ID
	 **		strColumnIDs		用户组有权限访问的栏目ID和
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-26
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByFatherIDColumnIDs(int nFatherID, string strColumnIDs)
	{
		string strSQL;

		if (strColumnIDs.Trim() != "")
		{
			strSQL = "SELECT * FROM Columns WHERE Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_FatherID = '" + nFatherID.ToString() + "' AND Columns_ID IN (" + strColumnIDs + ") ORDER BY Columns_Order ASC";
		}
		else
		{
			strSQL = "SELECT * FROM Columns WHERE Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_FatherID = '" + nFatherID.ToString() + "' ORDER BY Columns_Order ASC";
		}

		return clsDB.QueryDataTable(strSQL);
	}

	/**********************************************************************************************
	 ** 功能描述：	根据栏目地址查找栏目
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-26
	 ** 备注：
	 *********************************************************************************************/
	public DataTable QueryByLink(string strLink)
	{
		string strSQL;

		strSQL = "SELECT * FROM Columns WHERE Columns_Status = '"+clsConfig.nNormal.ToString()+"' AND Columns_Link = '"+strLink+"'";
		return clsDB.QueryDataTable(strSQL);
	}

	/// <summary>
	/// 查询栏目，通过栏目上级栏目ID，栏目的类型查询
	/// </summary>
	/**********************************************************************************************
	 ** 功能描述：	查询栏目，通过栏目上级栏目ID，栏目的类型查询
	 ** 输入参数：	int nFatherColumnID		上级栏目ID
	 **		int nType			栏目类型，是前台栏目还是后台栏目
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-08-15
	 ** 修改：
	 ** 日期：
	 *********************************************************************************************/
	public DataTable QueryColumn(int nFatherColumnID, int nType)
	{
		string strSQL;

		strSQL = "SELECT * FROM Columns WHERE Columns_Status = '" + clsConfig.nNormal.ToString() + "' AND Columns_FatherID = '" + nFatherColumnID.ToString() + "' AND Columns_Type = '"+nType.ToString()+"'";
		return QueryToDataTable(strSQL);
	}

	#endregion
}
